//
//  RNOLUnitTool.h
//  RongNiuOnline
//
//  Created by apple on 2018/4/4.
//  Copyright © 2018年 rongniu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface RNOLUnitTool : NSObject

// 创建控件的工厂方法 ，将特殊的元素传入 生产相对应的元素

#pragma mark --------- UILabel ---------

/** Label 颜色 字号*/
+ (UILabel *)createLabelWithTextColor:(UIColor *)textColor
                             fontSize:(CGFloat )size;

/** Label 文字 字号*/
+ (UILabel *)createLabelWithText:(NSString *)text
                        fontSize:(CGFloat )size;

/** Label 字色 文字 字号*/
+ (UILabel *)createLabelWithText:(NSString *)text
                       textColor:(UIColor *)textColor
                        fontSize:(CGFloat )size;

/** Label 字色 文字 字号 对其*/
+ (UILabel *)createLabelWithText:(NSString *)text
                       textColor:(UIColor *)textColor
                        fontSize:(CGFloat )size
                   textAlignment:(NSTextAlignment)textAlignment;

#pragma mark --------- UIImageView ---------

/** UIImageView  iamge*/
+(UIImageView *)createImageViewWithImage:(UIImage *)image;

#pragma mark --------- UIView ---------

/** UIView  颜色*/
+ (UIView *)createViewWithBackgroundColor:(UIColor *)backgroundColor;


/**
 *  给某个控件设圆角
 *
 *  @param corner  圆角度
 *  @param view    要切圆角的控件
 */
+ (void)makeCorner:(CGFloat)corner
              view:(UIView *)view;

/**
 *  添加单击手势
 *
 *  @param target  target
 *  @param action  SEL
 *  @param view    控件名
 */
+ (void)addClickEvent:(id)target
               action:(SEL)action
                owner:(UIView *)view;

/**
 *  给控件添加边框
 *
 *  @param width  边框宽度
 *  @param view    控件名
 *  @param color   边框颜色
 */
+ (void)makeWidth:(CGFloat)width
             view:(UIView *)view
            color:(UIColor *)color;

/**
 *  控件边缘灰色线条
 *
 *  @param view      控件名
 *  @param dirction  线条位置
 *  @param sizew     控件宽度
 */
+ (void)setFoursides:(UIView *)view
           Direction:(NSString *)dirction
               sizeW:(CGFloat)sizew;

/** 设置UILabel的不同颜色与大小*/
+ (void)setUILabel:(UILabel *)label
              Data:(NSString *)string
           SetData:(NSString *)setstring
             Color:(UIColor *)color
              Font:(CGFloat)font
         Underline:(BOOL)isbool;


//蓝色长条按钮 需要重新设置origin
+ (UIButton *)createRNOLStyleBlueButtonWithButtonTitle:(NSString *)title ;
//自定义颜色长条按钮 需要重新设置origin
+ (UIButton *)createRNOLStyleButtonWithButtonTitle:(NSString *)title backgroundColor:(UIColor *)bgColor cornerRadius:(CGFloat)radius;


#pragma mark - 富文本操作

/**
 *  单纯改变一句话中的某些字的颜色（一种颜色）
 *
 *  @param color    需要改变成的颜色
 *  @param totalStr 总的字符串
 *  @param subArray 需要改变颜色的文字数组(要是有相同的 只取第一个)
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_changeCorlorWithColor:(UIColor *)color TotalString:(NSString *)totalStr SubStringArray:(NSArray *)subArray;
/**
 *  单纯改变句子的字间距（需要 <CoreText/CoreText.h>）
 *
 *  @param totalString 需要更改的字符串
 *  @param space       字间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_changeSpaceWithTotalString:(NSString *)totalString Space:(CGFloat)space;

/**
 *  单纯改变段落的行间距
 *
 *  @param totalString 需要更改的字符串
 *  @param lineSpace   行间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_changeLineSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace;

/**
 *  同时更改行间距和字间距
 *
 *  @param totalString 需要改变的字符串
 *  @param lineSpace   行间距
 *  @param textSpace   字间距
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_changeLineAndTextSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace textSpace:(CGFloat)textSpace;
/**
 *  改变某些文字的颜色 并单独设置其字体
 *
 *  @param font        设置的字体
 *  @param color       颜色
 *  @param totalString 总的字符串
 *  @param subArray    想要变色的字符数组
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_changeFontAndColor:(UIFont *)font Color:(UIColor *)color TotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray;

/**
 *  为某些文字改为链接形式
 *
 *  @param totalString 总的字符串
 *  @param subArray    需要改变颜色的文字数组(要是有相同的 只取第一个)
 *
 *  @return 生成的富文本
 */
+ (NSMutableAttributedString *)wgb_addLinkWithTotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray;


//交换实例对象方法的实现
+ (void)wgb_swizzleInstanceMethodWithClass:(Class)originClass
                          OriginMethod:(SEL)originMethod
                         swappedMethod:(SEL)swappedMethod ;
//交换类方法的实现
+ (void)wgb_swizzleClassMethodWithClass:(Class)originClass
                       OriginMethod:(SEL)originMethod
                      swappedMethod:(SEL)swappedMethod ;


@end
